package com.b.btest;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.SoundPool;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageButton;

public class MainActivity extends Activity {

	/** SE用*/
	private SoundPool sp;
	int seID_MainMenu = -1;
	//mediaplayer用
	MediaPlayer mp;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		//リソースファイルからSEをロード
		sp = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
		seID_MainMenu = sp.load(this, R.raw.mainmenu, 1);

		setContentView(R.layout.activity_main);

		//各ボタンの取得
		ImageButton songbtn = (ImageButton) findViewById(R.id.song);
		ImageButton artistbtn = (ImageButton) findViewById(R.id.artist);
		ImageButton albumbtn = (ImageButton) findViewById(R.id.album);
		ImageButton settingbtn = (ImageButton) findViewById(R.id.setting);
		ImageButton infobtn = (ImageButton) findViewById(R.id.info);

		//songbtnクリックリスナーの登録
		songbtn.setOnClickListener(
				new OnClickListener() {
					public void onClick(View v) {
						//効果音を鳴らす
						sp.play(seID_MainMenu, 1.0F, 1.0F, 0, 0, 1.0F);
						Intent intent = new Intent(MainActivity.this, SecondActivity.class);
						startActivity(intent);

					}
				});
		//artistbtnクリックリスナーの登録
		artistbtn.setOnClickListener(
				new OnClickListener() {
					public void onClick(View v) {
						sp.play(seID_MainMenu, 1.0F, 1.0F, 0, 0, 1.0F);
						Intent intent = new Intent(MainActivity.this, ArtistActivity.class);
						startActivity(intent);

					}

				});
		//albumbtnクリックリスナーの登録
		albumbtn.setOnClickListener(
				new OnClickListener() {
					public void onClick(View v) {
						sp.play(seID_MainMenu, 1.0F, 1.0F, 0, 0, 1.0F);
						Intent intent = new Intent(MainActivity.this, AlbumActivity.class);
						startActivity(intent);

					}

				});
		//settingbtnクリックリスナーの登録
		settingbtn.setOnClickListener(
				new OnClickListener() {
					public void onClick(View v) {
						sp.play(seID_MainMenu, 1.0F, 1.0F, 0, 0, 1.0F);
						Intent intent = new Intent(MainActivity.this, SettingActivity.class);
						startActivity(intent);

					}

				});

		//infobtnクリックリスナーの登録
		infobtn.setOnClickListener(
				new OnClickListener() {
					public void onClick(View v) {
						sp.play(seID_MainMenu, 1.0F, 1.0F, 0, 0, 1.0F);
						Intent intent = new Intent(MainActivity.this, InfoActivity.class);
						startActivity(intent);

					}

				});

	}
	
	/**
	 * アクティビティ開始時に呼ばれる.
	 */
	@Override
	public void onStart() {
		super.onStart();
		//BGMを再生
		mp = MediaPlayer.create( this, R.raw.menumusic);
		mp.setLooping(true);
		mp.start();
	}
	
	/**
	 * アクティビティ中断時
	 */
	@Override
	public void onPause(){
		        super.onPause();		        
		    }

	
	/**
	 * アクティビティの停止時に呼ばれる.
	 */
	@Override
	public void onStop() {
		super.onStop();
		//BGMを停止
        mp.stop();
        mp.release();
	}

	/**
	 * アクティビティ終了時に呼ばれる.
	 */
	public void onDestoroy() {
		super.onDestroy();

		sp.stop(seID_MainMenu);
		sp.unload(seID_MainMenu);
		sp.release();
		
		//BGMを停止
        mp.stop();
        mp.release();
	}

	//バックボタンを押下した際の処理開始
	@Override
	public boolean onKeyDown(int keyCode1, KeyEvent event) {
		if (keyCode1 == KeyEvent.KEYCODE_BACK) {
			yesNo();
		}
		return false;
	}

	/**
	 * 確認ダイアログ
	 *
	 */
	private void yesNo() {
		// 確認ダイアログの生成
		AlertDialog.Builder alertDlg = new AlertDialog.Builder(this);
		alertDlg.setTitle("確認");
		alertDlg.setMessage("アプリを終了しますか？");
		alertDlg.setPositiveButton(
				"OK",
				new DialogInterface.OnClickListener() {
					public void onClick(DialogInterface dialog, int which) {
						// OK ボタンクリック処理
						//終了処理
						fin();
					}

				});
		alertDlg.setNegativeButton(
				"キャンセル",
				new DialogInterface.OnClickListener() {
					public void onClick(DialogInterface dialog, int which) {
						// Cancel ボタンクリック処理
					}
				});
		// ダイアログの表示
		alertDlg.create().show();
	}

	/*
	 * 終了処理
	 *
	 */
	private void fin() {
		sp.stop(seID_MainMenu);
		sp.unload(seID_MainMenu);
		sp.release();
		this.finish();
	}
}
